#include<bits/stdc++.h>
using namespace std;
typedef bitset<100001> B;
int main(){
  freopen("seq.in","r",stdin);
  freopen("seq.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  string s,t; cin>>s>>t;
  int n=s.length(),m=t.length();
  vector<vector<int> > nx(n+1,vector<int>(2,n)),nx2=nx;
  vector<vector<vector<int> > > g(n,vector<vector<int> >(2));
  for(int i=n-1;~i;i--){
    nx[i]=nx[i+1],nx[i][s[i]&1]=i;
    if(i<n-1&&s[i+1]==s[i]){
      nx2[i][s[i]&1]=nx2[i+1][s[i]&1];
      nx2[i][~s[i]&1]=nx[i][~s[i]&1];
    }
    else nx2[i][s[i]&1]=i,nx2[i][~s[i]&1]=i+1;
    for(int j=0;j<2;j++){
      if(nx[i][j]<n)g[nx[i][j]][j].emplace_back(i);
      if(nx2[i][j]<n)g[nx2[i][j]][j].emplace_back(i);
    }
  }
  if(max(n,m)<=2000||m<=20){
    vector<vector<bool> > f(n+1,vector<bool>(m+1));
    f[0][0]=true;
    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++)
        if(f[i][j]){
          if(nx[i][t[j]&1]<n)f[nx[i][t[j]&1]+1][j+1]=true;
          if(nx2[i][t[j]&1]<n)f[nx2[i][t[j]&1]+1][j+1]=true;
        }
    int ls=n-1;
    while(ls>0&&s[ls-1]==s[ls])ls--;
    for(int w=ls;w<=n;w++)
      if(f[w][m]){
        cout<<"YES\n";
        vector<int> r;
        for(int i=m,x=w;i;i--){
          r.emplace_back(x-1);
          for(int j:g[x-1][t[i-1]&1])
            if(f[j][i-1]){x=j; break;}
        }
        reverse(r.begin(),r.end());
        for(int i:r)cout<<i+1<<' ';
        cout<<endl,exit(0);
      }
    cout<<"NO\n";
  }
  else{
    bool fl=true;
    for(int i=1;i<m;i++)
      fl&=t[i]!=t[i-1];
    if(fl){
      vector<int> r;
      for(int i=0;i<n&&r.size()<m;i++)
        if(s[i]==t[r.size()])
          r.emplace_back(i);
      if(r.size()<m)cout<<"NO\n";
      else{
        cout<<"YES\n";
        for(int i:r)cout<<i+1<<' ';
        cout<<endl;
      }
      return 0;
    }
    vector<B> f(n+1),k(2); f[0].set(0);
    for(int i=0;i<m;i++)
      k[t[i]&1].set(i);
    for(int i=0;i<n;i++)
      for(int j=0;j<2;j++){
        auto w=(f[i]&k[j])<<1;
        if(nx[i][j]<n)f[nx[i][j]+1]|=w;
        if(nx2[i][j]<n)f[nx2[i][j]+1]|=w;
      }
    int ls=n-1;
    while(ls>0&&s[ls-1]==s[ls])ls--;
    for(int w=ls;w<=n;w++)
      if(f[w][m]){
        cout<<"YES\n";
        vector<int> r;
        for(int i=m,x=w;i;i--){
          r.emplace_back(x-1);
          for(int j:g[x-1][t[i-1]&1])
            if(f[j][i-1]){x=j; break;}
        }
        reverse(r.begin(),r.end());
        for(int i:r)cout<<i+1<<' ';
        cout<<endl,exit(0);
      }
    cout<<"NO\n";
  }
  return 0;
}